From 6b161fa314ee5948a7ebde5d4320d669041e831e Mon Sep 17 00:00:00 2001
From: Hermann Meyer <brummer-@web.de>
Date: Mon, 9 Nov 2015 09:46:54 +0100
Subject: [PATCH 2/3]  * set wscript to versio 0.34.0git  * make webkit
 optional  * add filebrowser for upload preset banks

---
 trunk/src/gx_head/gui/gx_preset_window.cpp | 34 +++++++++++++++++++++++++++++-
 trunk/src/headers/gx_preset_window.h       |  8 ++++++-
 trunk/wscript                              |  5 +++--
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/trunk/src/gx_head/gui/gx_preset_window.cpp b/trunk/src/gx_head/gui/gx_preset_window.cpp
index ead8c93..1050a9d 100644
--- a/trunk/src/gx_head/gui/gx_preset_window.cpp
+++ b/trunk/src/gx_head/gui/gx_preset_window.cpp
@@ -81,10 +81,13 @@ PresetWindow::PresetWindow(Glib::RefPtr<gx_gui::GxBuilder> bld, gx_engine::GxMac
     //actiongroup->add(act, sigc::mem_fun(*this, &PresetWindow::on_presets_close));
     //gtk_activatable_set_related_action(GTK_ACTIVATABLE(close_preset->gobj()), act->gobj());
     close_preset->hide(); // disable (maybe remove later)
+#ifdef HAVE_WEBKIT
     actions.online_preset_bank = Gtk::Action::create("OnlineBank");
     actions.group->add(actions.online_preset_bank, sigc::mem_fun(*this, &PresetWindow::on_online_preset));
     gtk_activatable_set_related_action(GTK_ACTIVATABLE(online_preset->gobj()), actions.online_preset_bank->gobj());
-
+#else
+    online_preset->set_sensitive(false);
+#endif
     bank_treeview->set_model(Gtk::ListStore::create(bank_col));
     bank_treeview->set_name("PresetView");
     bank_treeview->get_selection()->set_select_function(
@@ -686,6 +689,7 @@ void PresetWindow::on_new_bank() {
     start_edit(m->get_path(edit_iter), *bank_treeview->get_column(1), *bank_cellrenderer);
 }
 
+#ifdef HAVE_WEBKIT
 
 bool PresetWindow::insertRequested(const char *ur, gpointer data)
 {
@@ -748,6 +752,31 @@ bool PresetWindow::downloadRequested(WebKitWebView* webView, WebKitDownload *dow
     return TRUE;
 }
 
+bool PresetWindow::uploadRequested(WebKitWebView* webView, WebKitFileChooserRequest *request,gpointer data )
+{
+    Gtk::FileChooserDialog d( "Select upload file");
+    d.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
+    d.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
+    d.add_shortcut_folder(string(getenv("HOME")) + string("/.config/guitarix/bamks"));
+    Gtk::FileFilter banks;
+    banks.set_name("Bank Files");
+    banks.add_pattern("*.gx");
+    d.add_filter(banks);
+    Gtk::FileFilter all;
+    all.add_pattern("*");
+    all.set_name("All Files");
+    d.add_filter(all);
+    d.set_current_folder(string(getenv("HOME")) + string("/.config/guitarix/banks"));
+
+    if (d.run() != Gtk::RESPONSE_OK) {
+        return FALSE;
+    }
+    Glib::ustring  filename = d.get_filename();
+    const gchar*  f[2] = {filename.c_str(),0};
+    webkit_file_chooser_request_select_files (request, f);
+    return TRUE;
+}
+
 void PresetWindow::show_online_preset() {
 
   Gtk::Window *window = new Gtk::Window();
@@ -760,6 +789,7 @@ void PresetWindow::show_online_preset() {
   window->add(*Gtk::manage(scrollbox));
   webkit_web_view_load_uri(web_view, "https://musical-artifacts.com/?apps=guitarix");
   g_signal_connect(G_OBJECT (web_view), "download-requested", G_CALLBACK(downloadRequested), this);
+  g_signal_connect(G_OBJECT (web_view), "run-file-chooser", G_CALLBACK(uploadRequested), this);
   window->show_all();
 }
 
@@ -767,6 +797,8 @@ void PresetWindow::on_online_preset() {
     Glib::signal_idle().connect_once(sigc::mem_fun(*this, &PresetWindow::show_online_preset));
 }
 
+#endif
+
 bool PresetWindow::on_bank_drag_motion(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, guint timestamp) {
     Gtk::Widget *source_widget = Gtk::Widget::drag_get_source_widget(context);
     if (!source_widget) {
diff --git a/trunk/src/headers/gx_preset_window.h b/trunk/src/headers/gx_preset_window.h
index a009670..48a9801 100644
--- a/trunk/src/headers/gx_preset_window.h
+++ b/trunk/src/headers/gx_preset_window.h
@@ -24,7 +24,10 @@
 /****************************************************************
  ** class PresetWindow
  */
+
+#ifdef HAVE_WEBKIT
 #include <webkit/webkit.h>
+#endif
 
 class PresetStore: public Gtk::ListStore {
 public:
@@ -141,12 +144,15 @@ private:
     bool is_row_separator(const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::iterator& iter);
     void on_new_bank();
     void on_preset_save();
+    const std::string pdir() { return options.get_preset_dir();}
+#ifdef HAVE_WEBKIT
     void on_online_preset();
     void show_online_preset();
-    const std::string pdir() { return options.get_preset_dir();}
     static bool downloadRequested(WebKitWebView* webView, WebKitDownload *download,gpointer data );
+    static bool uploadRequested(WebKitWebView* webView, WebKitFileChooserRequest *request,gpointer data );
     static bool insertRequested(const char* uri, gpointer data );
     static void download_status(GObject* object, GParamSpec* pspec, gpointer data);
+#endif
     bool on_bank_drag_motion(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, guint timestamp);
     void on_bank_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, const Gtk::SelectionData& data, guint info, guint timestamp);
     void on_bank_drag_data_get(const Glib::RefPtr<Gdk::DragContext>& context, Gtk::SelectionData& selection, int info, int timestamp);
diff --git a/trunk/wscript b/trunk/wscript
index 9c0e41b..99cab29 100644
--- a/trunk/wscript
+++ b/trunk/wscript
@@ -24,7 +24,7 @@ blddir = 'build'
 use_2to3 = True
 
 # used by waf dist and waf build
-VERSION='0.34.0'
+VERSION='0.34.0git'
 APPNAME='guitarix'
 
 good_faust_versions = ['0.9.58','0.9.65']
@@ -649,7 +649,7 @@ def configure(conf):
         conf.check_cfg(package='lrdf', args='--cflags --libs', uselib_store='LRDF', mandatory=1)
         conf.check(header_name='ladspa.h', mandatory=1)
         conf.check_cfg(package='lilv-0', args='--cflags --libs', uselib_store='LILV', mandatory=1)
-        conf.check_cfg(package='webkit-1.0', args='--cflags --libs', uselib_store='WEBKIT', mandatory=1)
+        conf.check_cfg(package='webkit-1.0', args='--cflags --libs', uselib_store='WEBKIT', mandatory=0, define_name='HAVE_WEBKIT')
         check_boost(conf)
     conf.check_cfg(package='lv2', atleast_version='1.2.0',args='--cflags --libs', uselib_store='LV2CORE', mandatory=1)
 
@@ -811,6 +811,7 @@ def configure(conf):
     display_feature("Use prebuild gperf files", not conf.env["HAVE_GPERF"])
     display_feature("Avahi service discovery", conf.env["HAVE_AVAHI"])
     display_feature("Bluetooth rfcomm", conf.env["HAVE_BLUEZ"])
+    display_feature("Use Webkit", conf.env["HAVE_WEBKIT"])
     display_feature("Use internal zita-resampler", not conf.env['ZITA_RESAMPLER'])
     if conf.env['CONVOLVER_FFMPEG']:
         display_feature("Use zita-convolver-ffmpeg", True)
-- 
1.8.4

